#include <stdio.h>
#include<iostream>
#include <string.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <unistd.h>
void *my_malloc(size_t size)
{
    void *ptr=mmap(nullptr,size,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0);
    if(ptr==MAP_FAILED)
    {
        return nullptr;
    }
    return ptr;
}

void my_free(void *start,size_t size)
{
    if(start!=nullptr&&size>0)
    {
        int ret=munmap(start,size);
        if(ret!=0)
        {
            perror("my_free");
        } 
    }
}

int main()
{
    char *ptr=(char*)my_malloc(1024);
    if(ptr==nullptr)
    {
        std::cerr<<"malloc failed"<<std::endl;
        return 1;
    }
    // 使⽤分配的内存（这⾥只是简单地打印指针值）
    printf("Allocated memory at address: %p\n", ptr);
    // ... 在这⾥可以使⽤ptr指向的内存 ...
    memset(ptr, 'A', 1024);
    for (int i = 0; i < 1024; i++)
    {
        printf("%c ", ptr[i]);
        //sleep(1);
    }
    // 释放分配的内存

    my_free(ptr,1024);
    return 0;
}